package com.minimvc.interfaces
{
	import flash.events.Event;
	
	
	/**
	 *  应用外观,主要提供简单接口调用;
	 * @author crl
	 * 
	 */	
	public interface IFacade
	{
		
		/**
		 * 注册数据代理 
		 * @param proxy
		 * 
		 */		
		function registerProxy( proxy:IProxy ) : void;
		
		/**
		 * 取得相应的数据代理; 
		 * @param proxyName
		 * @return 
		 * 
		 */		
		function getProxy( proxyName:String ) : IProxy;
		
		/**
		 * 删除数据代理; 
		 * @param proxyName
		 * @return 
		 * 
		 */		
		function removeProxy( proxyName:String ) : IProxy;
		
		
		/**
		 * 是否含有相应的数据代理; 
		 * @param proxyName
		 * @return 
		 * 
		 */		
		function hasProxy( proxyName:String ) : Boolean;
		
		/**
		 * 注册命令; 
		 * @param eventType
		 * @param commandClassRef
		 * 
		 */		
		function registerCommand( eventType : String, commandClassRef : Class ) : void;
		
		/**
		 * 删除命令; 
		 * @param notificationName
		 * 
		 */		
		function removeCommand( eventType:String ): void;
		
		/**
		 * 是否含有相应的命令; 
		 * @param eventType
		 * @return 
		 * 
		 */		
		function hasCommand( eventType:String ) : Boolean;
		
		/**
		 * 注册视图代理控制器; 
		 * @param mediator
		 * 
		 */		
		function registerMediator( mediator:IMediator ) : void;
		
		/**
		 * 取得相应视图代理控制器; 
		 * @param mediatorName
		 * @return 
		 * 
		 */		
		function getMediator( mediatorName:String ) : IMediator;
		
		/**
		 * 删除视图代理控制器;  
		 * @param mediatorName
		 * @return 
		 * 
		 */		
		function removeMediator( mediatorName:String ) : IMediator;
		
		/**
		 * 是否含有视图代理控制器;  
		 * @param mediatorName
		 * @return 
		 * 
		 */		
		function hasMediator( mediatorName:String ) : Boolean;
		
		/**
		 * 发布事件; 
		 * @param event
		 * @return 
		 * 
		 */		
		function dispatchEvent(event:Event):Boolean;

	}
}